-- 功能：原子性获取令牌（存在时扣减）
-- 参数：KEYS[1]=令牌键，ARGV[1]=扣减数量，ARGV[2]=过期时间
local key = KEYS[1]
local decrease = tonumber(ARGV[1])
local expire = tonumber(ARGV[2])

-- 获取当前值
local current = redis.call('GET', key)
if current == false then
    return nil  -- 键不存在
end
--先更新缓存时间
redis.call('EXPIRE', key, expire)
-- 检查数量是否足够
if tonumber(current) < decrease then
    return -1  -- 数量不足
end

-- 扣减数量并设置过期时间（原子操作）
local newCount = redis.call('DECRBY', key, decrease)
return newCount